package com.zp.self.module.level_4_算法练习.数据结构.String;
/**
*  编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀，返回空字符串 ""。
 *  示例 1：
 * 输入：strs = ["flower","flow","flight"]
 * 输出："fl"
 *
 * 示例 2：
 * 输入：strs = ["dog","racecar","car"]
 * 输出：""
 * 解释：输入不存在公共前缀。
 *
* @author  ZengPeng
* @date  2021/2/20
**/
class 力扣_14_最长公共前缀 {
    public static void main(String[] args) {
        System.out.println(longestCommonPrefix(new String[]{"flower","flow","flight"}));
    }

    /**
     题目：编写一个函数来查找字符串数组中的最长公共前缀。
     如果不存在公共前缀，返回空字符串 ""。

     示例 1：
     输入：strs = ["flower","flow","flight"]
     输出："fl"

     示例 2：
     输入：strs = ["dog","racecar","car"]
     输出：""
     解释：输入不存在公共前缀。

     分析：
     1.找出最短的字符串长度，遍历整个字符串数组，一个个字符比较

     边界值 & 注意点：
     1.
     **/
    public static String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length == 0)
            return "";
        int length = strs[0].length();
        StringBuilder sb =new StringBuilder() ;
        for (int i = 0; i < length; i++) {
            char c = strs[0].charAt(i);
            for (int j = 1; j < strs.length; j++) {
                if(strs[j].length() <= i || c!= strs[j].charAt(i))
                    return sb.toString();
            }
            sb.append(c);
        }
        return sb.toString();
    }
}